package com.coocaa.ops.admin.v1.timedtask.job;

import com.coocaa.ops.admin.v1.timedtask.model.QuartzSchedulerModel;
import com.coocaa.ops.common.core.biz.timedtask.entity.TimedTaskInfoEntity;

/**
 * @author bijiahao
 * @date : 2017/12/18.
 * @description定义定时任务接口
 */
public interface IJobService {
    /**
     * 定点执行一次的任务
     * @param timedTask
     * @param jobClazz
     */
    void addTimePointExecOnceQuartzJob(TimedTaskInfoEntity timedTask, Class<? extends AbstractQuartzJob> jobClazz);

    /**
     * 添加任务-简单定时-定时上架
     *
     * @param timedTask
     * @param jobClazz
     */
    void addJobForTimelyShelves(TimedTaskInfoEntity timedTask, Class<TimelyShelvesQuartzJob> jobClazz);

    /**
     * 添加任务-cron定时-推荐池更新
     *
     * @param timedTask
     * @param jobClazz
     */
    void addCronJob(TimedTaskInfoEntity timedTask,  Class<? extends AbstractQuartzJob> jobClazz);

    /**
     * 删除任务
     *
     * @param timedTask
     */
    void delJob(TimedTaskInfoEntity timedTask);

    /**
     * 获取调度器信息
     *
     * @return
     */
    QuartzSchedulerModel getQuartzSchedulerInfo() throws Exception;


    boolean isJobExist(TimedTaskInfoEntity entity);
}
